package org.hgvc.webapp.ets.spring.service;

import java.util.Date;
import java.util.List;

import org.hgvc.webapp.ets.bo.CalendarCategory;
import org.hgvc.webapp.ets.bo.CalendarCategoryDtl;
import org.hgvc.webapp.ets.bo.CalendarDtl;
import org.hgvc.webapp.ets.bo.Member;
import org.hgvc.webapp.ets.bo.Partner;
import org.hgvc.webapp.ets.bo.PartnerDocument;
import org.hgvc.webapp.ets.bo.PartnerDocumentCheckList;
import org.hgvc.webapp.ets.bo.PartnerProduct;
import org.hgvc.webapp.ets.bo.PartnerProductBooking;
import org.hgvc.webapp.ets.bo.PartnerProductExtension;
import org.hgvc.webapp.ets.bo.PartnerProductType;
import org.hgvc.webapp.ets.bo.XSServiceType;
import org.jocsb.base.bo.User;
import org.jocsb.base.exception.BaseException;


public interface PartnerService {

	public String partnerRegistration(Partner partner,boolean isOnlienReg,User creadtedUser)throws BaseException;
	public Partner getPartnerByUserId(String userId)throws BaseException;
	public Partner getPartnerById(String partnerId)throws BaseException;
	public void approvePartnerRegistration(Partner partner, User approver,String reason,String code,String actionNo)throws BaseException;
	public void rejectPartnerRegistration(Partner partner, User approver,String reason,String actionNo)throws BaseException;
	public List<PartnerDocument> getPartnerDocumentList()throws BaseException;
	public void createPatnerDocument(PartnerDocument doc,User createdUser)throws BaseException;
	public void updatePatnerDocument(PartnerDocument doc,User createdUser)throws BaseException;
	public void deletePatnerDocument(List<PartnerDocument> deleteList,User createdUser)throws BaseException;
	public List<Partner> getPendingApprovalPartner()throws BaseException;
	//public List<Partner> searchRegNoPartnerNameInList(String regno,String name,List<Partner> partnerList)throws BaseException;
	public List<Partner> searchPartnerList(String code,String companyName)throws BaseException;
	public List<PartnerDocumentCheckList> getPartnerDocumentCheckListWithType(String type,String partnerId)throws BaseException;
	public void checkPartnerDocumentSubmission(List<PartnerDocumentCheckList> mlist, List<PartnerDocumentCheckList> nlist, User user)throws BaseException;
	public void completePartnerDocumentSubmission(Partner partner,List<PartnerDocumentCheckList> mlist, List<PartnerDocumentCheckList> nlist, User user)throws BaseException;
	public List<PartnerProductType> getPartnerProductTypeList()throws BaseException;
	public void createPartnerProductType(PartnerProductType type,User createdUser)throws BaseException;
	public void updatePartnerProductType(PartnerProductType type,User createdUser)throws BaseException;
	public void deletePartnerProductType(List<PartnerProductType> deleteList,User createdUser)throws BaseException;
	public List<CalendarCategory> getCalendarCategoryList()throws BaseException;
	public void createCalendarCategory(CalendarCategory cat,User createdUser)throws BaseException;
	public void updateCalendarCategory(CalendarCategory cat,User createdUser)throws BaseException;
	public void deleteCalendarCategory(List<CalendarCategory> deleteList,User createdUser)throws BaseException;
	public List<CalendarDtl> getCalendarDtlList(String catId)throws BaseException;
	public void createCalendarDtl(CalendarCategory cat,User createdUser,CalendarDtl dtl, Date toDate)throws BaseException;
	public void updateCalendarDtl(CalendarCategory cat,User createdUser,CalendarDtl dtl)throws BaseException;
	public void deleteCalendarDtl(List<CalendarDtl> deleteList,User createdUser)throws BaseException;
	public PartnerProduct getPartnerProductById(String id)throws BaseException;
	public void ackPartnerProductMessage(String actionNo)throws BaseException;
	public void createPartnerProduct(PartnerProduct prod,User user,Partner partner)throws BaseException;
	public List<PartnerProduct> getPartnerProductList(Partner partner) throws BaseException;
	public void approvePartnerProduct(Partner partner,PartnerProduct partnerProduct,User user,String code,String reason,String actionNo)throws BaseException;
	public void rejectPartnerProduct(Partner partner,PartnerProduct partnerProduct,User user,String reason,String actionNo)throws BaseException;
	public Member getMemberByUserId(String userId)throws BaseException;
	public List<PartnerProductBooking> getPartnerProductBookingList(Date from,Date to,String partnerId)throws BaseException;
	public List<PartnerProductExtension> getPartnerProductExtensionList(String partnerId)throws BaseException;
	//Added By Jacky 16-03-2008-1103
	public List<PartnerProduct> getPartnerProductApprovedList()throws BaseException;
	public void createPartnerProductExtension(PartnerProductExtension ext,User createdUser)throws BaseException;
	public void updatePartnerProfile(Partner partner,User user)throws BaseException;
	
	public List<Partner> getApprovedPartnerList()throws BaseException;
	
	public List<Partner> getAllPartnerList()throws BaseException;
	
	public List<XSServiceType> getAllServiceTypeList()throws BaseException;
	
	public List<PartnerProduct> getPartnerProductApprovedList(String partnerId)throws BaseException;
	public List<CalendarCategoryDtl> getCalendarCategoryDtls(String calendarCatId)throws Exception;
	public void saveCalendarCategoryDtl(CalendarCategoryDtl calendarCategoryDtl) throws Exception;
 	public void deleteCalendarCategoryDtl(List<CalendarCategoryDtl> calCategoryList, User thisUser) throws Exception;
	List<Partner> getAllActivePartnerList() throws BaseException;

}
